package code.c02_list.cdLinkList;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/26 21:58
 * @package code.c02_list.cdLinkList
 * @description 有一个带头的结点的循环双链表L，其结点的data成员值为整数，设计一个算法，判断其所有的元素是否对称。
 * 如果从前向后读和从后往前读得到的数据序列相同，则表示是对称的，否则是不对称的。
 */

public class Exam_2_24 {
    public static boolean symm(CDLinkListClass<Integer> L){
        boolean flag = true;
        DLinkNode<Integer> p = L.dhead.next;
        DLinkNode<Integer> q = L.dhead.prior;

        while (flag){
            if (!p.data.equals(q.data)){
                flag = false;
            }else {
                if (p==q || p == q.prior){
                    break;
                }
                q = q.prior;
                p= p.next;
            }
        }

        return flag;
    }

    public static void main(String[] args) {
        Integer[] a = {1,4,3,4,1};

        CDLinkListClass<Integer> A = new CDLinkListClass<>();
        A.createListR(a);

        boolean symm = symm(A);
        System.out.println(symm);
    }
}
